package com.wkbb.sports.service;

import com.github.pagehelper.PageInfo;
import com.wkbb.common.base.BaseService;
import com.wkbb.common.dto.ResultDTO;
import com.wkbb.common.dto.basic.UserDto;
import com.wkbb.sports.dto.*;
import com.wkbb.sports.model.HlifePhysical;
import com.wkbb.sports.model.HlifeWork;
import com.wkbb.sports.model.HlifeWorkStudentHistory;

import java.util.List;
import java.util.Map;


/**
 * @author lbh
 * @date 2021年03月29日 17:58:34
 * @description:
 */
public interface WorkService extends BaseService<HlifeWork> {
    /**
     * 布置作业/新增作业
     * @param hifeWorkDto
     * @param userDto
     * @return
     */
    ResultDTO insertWork(HifeWorkDto hifeWorkDto, UserDto userDto);

    /**
     * 学生提交作业 查询学生本次作业提交历史中的最优成绩
     * @param hlifeWorkStudentHistory
     * @param userDto
     * @return
     */
    ResultDTO insertWorkStudentHistory(HlifeWorkStudentHistory hlifeWorkStudentHistory, UserDto userDto);


    /**
     * 当前作业的学生的排名
     * @param workId
     * @return
     */
    ResultDTO getStudentPositionOfWork(String workId);

    /**
     * 当前作业的学生的排名【前三名或者含自己的四名】
     * @param workId
     * @param studentId
     * @return
     */
    ResultDTO getStudentPositionOfWorkThird(String workId,String studentId);

    /**
     * 查询前三名或者含自己的前面的两名
     * @param workId
     * @param studentId
     * @return
     */
    ResultDTO getStudentByPosition(String workId,String studentId,String mark);

    /**
     *  查询项目下拉列表的值
     * @param orgId
     * @param projectType
     * @return
     */
    public ResultDTO<List<HlifePhysical>> getItemValue(Long orgId,Long projectType);

    /**
     *  查询评分标准下拉列表的值
     * @param physicalId
     * @param orgId
     * @param gradeId
     * @return
     */
//    public ResultDTO<List<HlifePhysicalRule>> getValueStandardOfEvaluation(Long physicalId,Long orgId ,Long gradeId);

    /**
     * 最近作业列表
     * @param teacherId
     * @param projectId
     * @param classId
     * @param time
     * @return
     */
    public ResultDTO<PageInfo<WorkDto>> getWorkListByTeacherId(Integer teacherId, Integer projectId, Integer classId, String time,Integer orgId, int pageNo, int pageSize);

    /**
     * 作业详情及统计
     * @param workId
     * @return
     */
    public ResultDTO<Map<String,Object>>  getWorkDetail(String workId);

    /**
     * 删除作业及其相关联信息
     * @param workId
     * @return
     */
    public ResultDTO  deleteWorkInfo(String workId);

    /**
     * 结束作业及其相关联信息【结束】
     * @param workId
     * @return
     */
    public ResultDTO  endAndStartWorkInfo(String workId,String status);

    /**
     * 个人作业记录【时长模式】
     * @param workId
     * @param studentId
     * @return
     */
    public ResultDTO<List<WorkStudentHistoryDto>> getStudentPersonalInfoDetail(Long studentHistoryId);

//===========================================小程序端=============【begin】===============================================================
    /**
     * 学生在小程序端查询属于自己的作业列表/作业详情
     * @param studentId
     * @param workId
     * @return
     */
    public ResultDTO<PageInfo<WorkDto>> getWorkListByStudentId(String studentId, String workId, Integer reached, int pageNo, int pageSize);

    /**
     * 教师催促作业
     * @param workId
     * @return
     */
    public ResultDTO alert(String workId);

    /**
     * 定时改变作业状态
     * @return
     */
    public void updateWorkStatus();


    /**
     * 个人作业记录【时长模式】【小程序端】
     * @param studentHistoryId
     * @return
     */
    public ResultDTO<PageInfo<WorkStudentHistoryDto>> getStudentWorkHistory(Long studentHistoryId,int pageNo,int pageSize);



    //获取某个作业已达标/未达标的学生列表
    public ResultDTO<PageInfo<WorkStuDto>> getUnAndReachStudentList(String workId,Integer reached, int pageNo,int pageSize);

//===========================================小程序端=============【end】===============================================================

    //    查询出当前作业已经做的学生的成绩
    List<WebSocketInfoDto> getStudentScoreOfWork(String workId);

	List<SportsHomeInfoDto> getStudentWorkList(Map<String,Object> params, int pageNo, int pageSize);


    //跳绳作业个人统计【PC端】
    public ResultDTO getStudentPersonalInfoDetailForPc(Long studentId, int pageNo, int pageSize);

    ResultDTO<Map<String, Object>> getWorkStudentByDate(String workId,String date);

//    ResultDTO<PageInfo<WorkDateDto>> getDayWorkListByTeacherId(Map<String, Object> params, int pageNo, int pageSize) throws Exception;

    //学校大屏【不归我写】
    //public ResultDTO getSchoolBigScreen(String schoolId,String gradeId,String type);


}












